package com.mm.cloud.common.redis.constant;

import com.mm.cloud.common.redis.constant.base.RedisKeyNamespace;
import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.concurrent.TimeUnit;

/**
 * Redis系统相关缓存Key
 *
 * @author mr
 * @since 2021-06-09
 */
public class RedisKeySystemConstants extends RedisKeyNamespace {

    /**
     * 系统命名空间
     */
    public static final String REDIS_SYSTEM = REDIS_NAMESPACE + "SYSTEM:";

    /**
     * 重复提交锁
     */
    public static final String REDIS_REPEAT = REDIS_SYSTEM + "REPEAT";

    /**
     * 登录token
     */
    public static final String REDIS_TOKEN = REDIS_SYSTEM + "TOKEN";

    /**
     * 防重复登录，同一个账号只能在一个地方登录
     */
    public static final String REDIS_LOGIN = REDIS_SYSTEM + "LOGIN";

    /**
     * 系统菜单
     */
    public static final String REDIS_INIT_PERMISSION = REDIS_SYSTEM + "PERMISSION";

    /**
     * 分布式锁
     */
    public static final String REDIS_DISTRIBUTION_LOCK = REDIS_SYSTEM + "DISTRIBUTION:LOCK:";

    /**
     * Redis系统相关缓存时间
     *
     * @author mr
     * @since 2021-06-09
     */
    @Getter
    @AllArgsConstructor
    public enum RedisCacheTimeEnum {

        TOKEN(2 * 60 * 60L, TimeUnit.SECONDS);

        /**
         * 时长
         */
        private Long time;

        /**
         * 单位
         */
        private TimeUnit unit;
    }

}
